散列函数和数字签名

您所在的位置:网站首页 xbox series是什么手柄 散列函数和数字签名

散列函数和数字签名

2023-09-15 17:28| 来源: 网络整理| 查看: 265

散列函数:也称作哈希函数,消息摘要函数,单向函数或杂凑函数。散列函数的作用不是完成数据的加密和解密,而是用于验证数据的完整性。散列值通常是一个短的随机字母和数字组成的字符串。

 

        上述流程中收发双方通信前已经协商了具体的散列算法,并且该算法是公开的,如果消息在传递过程中被篡改,则不能以已获得的数字指纹相匹配。签名即变相的使用摘要算法获得数字指纹。

        对于加密散列算法的最重要的因素是他们产生不可逆的和独特的哈希值。不可逆性,数据一旦产生哈希值,那么就不可能通过单一的哈希值解出原始的数据。独特性,两个不懂的数据是不能产生同样的哈希值

        散列函数的特性:

        1、消息长度不受限制

        2、对于给定的消息,其散列值的计算很容易

        3、如果两个散列值不同,则这两个散列值的原始输入消息也不同。

        4、散列函数的运算是不可逆的

        5、对于一个一直的消息和其散列值,要找到另一个消息使其获得相同的散列值是不可能的

        6、任意两个不同消息的散列值一定不同

 

        散列函数的常用算法有:

        MD:消息摘要算法 (MD2、MD4、MD5),通过MessageDigest类完成。如果需要以流的形式处理完成消息摘要,则需要使用DigestInputStream和DigestOutputStream。其特点是对同一段数据做多次摘要处理后,其摘要值完全一致(判断摘要结果是否一致:assertArrayEquals(data1,data2))。摘要长度为128字节。

       JAVA实现(SUN):

              MessageDigest md = MessageDigest.getInstance("MD5");

              byte[] b = md.digest(data);

 

        SHA:安全散列算法(SHA-1, SHA-224, SHA-256, SHA-384, SHA-512,后四种并称SHA-2)。与MD算法相比,摘要长度更长,安全性更高。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。SHA-2以摘要信息字节长度命名,其中SHA-224是为了符合3DES所需的密钥长度定义的。SHA后缀的256等即摘要结果长度的位数。

 

        MAC:消息认证码算法, 带秘密密钥的哈希函数,消息的散列值由只有通信双方知道的秘密密钥K来控制。此时Hash值称作MAC。

       MD分支:Hmac-MD2、Hmac-MD4、Hmac-MD5;

       SHA分支:Hmac-SHA1、Hmac-SHA256、Hmac-SHA384、Hmac-           SHA512、Hmac-SHA224等;

       |算法|摘要长度(位)|备注|

       |Hmac-MD5|128|JDK 6提供|        |Hmac-SHA1|160|JDK 6提供|        |Hmac-SHA256|256|JDK 6提供|        |Hmac-SHA384|384|JDK 6提供|        |Hmac-SHA512|512|JDK 6提供|        |Hmac-MD2|128|Bouncy Castle实现|        |Hmac-MD4|128|Bouncy Castle实现|        |Hmac-SHA224|224|Bouncy Castle实现|

算法支持:SUN、Bouncy Castle、Commons Codec

 

数字签名:带密钥的消息摘要算法。通过散列函数确保数据内容的完整性并不够,还需要确保数据来源的可认证(鉴别)性和不可否认性。完整性、认证性、不可否认性正是数字签名的主要特征。也就是说,数字签名是非对称加密和债市要算法的合体。包含签名和验签,遵循“私钥签名,公钥验签”



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3